home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’95 / Menu Controls / ToolsMenu.h < prev    next >
Text File  |  1995-06-24  |  4KB  |  144 lines

  1. // Copyright © 1994-95 by Apple Computer, Inc. All rights reserved.
  2. // ToolsMenu.h
  3.  
  4. #ifndef __TOOLSMENU__
  5. #define __TOOLSMENU__
  6.  
  7. #ifndef __UTEAROFFMENUVIEW__
  8. #include "UTearOffMenuView.h"
  9. #endif
  10.  
  11. #ifndef __UVIEW__
  12. #include "UView.h"
  13. #endif
  14.  
  15. //--------------------------------------------------------------------------------------------------
  16.  
  17. class TShape;
  18.  
  19. //--------------------------------------------------------------------------------------------------
  20. // Constants
  21.  
  22. #define kShapesInPalette 5
  23.  
  24. #define kNoToolSelection -1
  25.  
  26. //--------------------------------------------------------------------------------------------------
  27. // CLASS TToolsMenu - the Tools tear-off menu
  28. //--------------------------------------------------------------------------------------------------
  29. class TToolsMenu : public TTearOffMenuView
  30. {
  31.     MA_DECLARE_CLASS;
  32.  
  33.   public:
  34.     TToolsMenu();        // Constructor
  35.     void IToolsMenu(ResNumber menuID);
  36. };
  37.  
  38. //--------------------------------------------------------------------------------------------------
  39. // CLASS TToolsPalette - the Tools palette used in the tools tear-off menu and
  40. //                         the tools floating window
  41. //--------------------------------------------------------------------------------------------------
  42. class TToolsPalette : public TView
  43. {
  44.     MA_DECLARE_CLASS;
  45.  
  46.   public:
  47.     TToolsPalette();        // Constructor
  48.     void IToolsPalette(TDocument* itsDocument, TView* itsSuperView);
  49.  
  50.     // • Screen display
  51.     virtual void DoSetCursor(const VPoint& localPoint, RgnHandle cursorRegion); // Override
  52.     virtual void Draw(const VRect& area); // Override
  53.  
  54.     void SelectNewTool(short whichTool);
  55.  
  56.     // • Mousing
  57.     virtual void DoMouseCommand(VPoint& theMouse,
  58.                                 TToolboxEvent* event,
  59.                                 CPoint hysteresis); // Override
  60.     virtual void TrackFeedback(TrackPhase aTrackPhase,
  61.                                const VPoint& anchorPoint,
  62.                                const VPoint& previousPoint,
  63.                                const VPoint& nextPoint,
  64.                                Boolean mouseDidMove,
  65.                                Boolean turnItOn);    // Override
  66.  
  67.     // • Misc
  68.     inline short GetCurrTool() { return fCurrTool; };
  69.     inline short GetSelectedTool() { return fSelectedTool; };
  70.  
  71.     short fCurrTool;
  72.     short fOldTool;
  73.  
  74.   private:
  75.     short fSelectedTool;
  76.     CRect fChoiceArray[kShapesInPalette+1];    // bounds of each square in palette
  77.  
  78.     void FrameTool(CRect toolRect);
  79.     void Toggle(short theTool);
  80. };
  81.  
  82. //--------------------------------------------------------------------------------------------------
  83. // CLASS TToolSelectCmd - this tracker tracks in:
  84. //                            - the tools floating window
  85. //                            - the tools palette in the document window
  86. //                            - the tools tear-off menu
  87. //--------------------------------------------------------------------------------------------------
  88. class TToolSelectCmd : public TTearOffMenuViewTracker
  89. {
  90.     MA_DECLARE_CLASS;
  91.  
  92.   public:
  93.     TToolSelectCmd();        // Constructor
  94.     void IToolSelectCmd(TToolsPalette* theToolsPalette,
  95.                         TToolsPalette* theMenuToolsPalette,
  96.                         TToolsPalette* theFloatingToolsPalette,
  97.                         VPoint theMouse);
  98.     // Must keep a reference to both the current TToolsPalette view that we're tracking in
  99.     // and the TToolsPalette view that is in the floating window
  100.  
  101.     virtual TTracker* TrackMouse(TrackPhase aTrackPhase,
  102.                                  VPoint& anchorPoint,
  103.                                  VPoint& previousPoint,
  104.                                  VPoint& nextPoint,
  105.                                  Boolean mouseDidMove);    // Override
  106.  
  107.     virtual void TrackFeedback(TrackPhase aTrackPhase,
  108.                                 const VPoint& anchorPoint,
  109.                                 const VPoint& previousPoint,
  110.                                 const VPoint& nextPoint,
  111.                                 Boolean mouseDidMove,
  112.                                 Boolean turnItOn);    // Override
  113.  
  114.     virtual Boolean IsDoneTracking();    // Override
  115.  
  116.     virtual void DoIt();    // Override
  117.     virtual void UndoIt();    // Override
  118.     virtual void RedoIt();    // Override
  119.  
  120.   private:
  121.     TToolsPalette*    fMenuToolsPalette;
  122.     TToolsPalette*    fFloatingToolsPalette;
  123.     short            fTool;
  124.     Boolean            fExitTracking;
  125. };
  126.  
  127. // • Utilities
  128. TToolsPalette* GetToolsPalette();
  129.  
  130. //----------------------------------------------------------------------------------------
  131. // Globals defined in ToolsMenu.cp:
  132.  
  133. extern TToolsMenu*    gToolsMenu;
  134. extern TWindow*        gToolsPaletteWindow;
  135.  
  136. // Getter and setter for shapes list
  137. extern void SetShapeInArray(TShape* shape);
  138. extern TShape* GetShapeInArray(short shapeID);
  139. extern short GetNumberOfShapes();
  140.  
  141. //----------------------------------------------------------------------------------------
  142.  
  143. #endif
  144.